home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 16 / AMIGAplus Sonderheft 16 (1998)(ICP)(DE)[!].iso / pd / anwendungen / dcf77 / developer / dcf77-datenaustausch next >
Text File  |  1998-07-30  |  4KB  |  93 lines

  1.  
  2.                                                             
  3.       DCF77:  Wie man den Status des Empfangsprogramms erfahren kann
  4.       ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  5.  
  6.  
  7.  Damit andere Programme ermitteln können, ob DCF77 die Systemzeit
  8.  erfolgreich eingestellt hat, besitzt das Programm eine Datenstruktur, die
  9.  eine öffentliche SignalSemaphore zur Regelung des Zugriffs enthält.
  10.  
  11.  Zum Zugriff auf die Struktur gelten die Regeln für die Benutzung von
  12.  Public Shared SignalSemaphoren. Es sollte nur lesend zugegriffen werden.
  13.  
  14.  Die Semaphore ist unter dem Namen "DCF77 State" zu finden.
  15.  
  16.  
  17.  struct DCF77StateList
  18.  {
  19.     struct SignalSemaphore sl_Semaphore; // die Semaphore "DCF77 State"
  20.     STRPTR Version; // Zeiger auf die Version von DCF77 (z.B. "1.74")
  21.     BOOL Received;  // FALSE: keine DCF77-Zeit | TRUE: Systemzeit gestellt.
  22.  
  23.     // Die nachfolgenden Werte existieren erst ab DCF77 Version 2.18:
  24.     LONG ReceiverState; // 0 - kein Signal. 1 - Empfang gestört.
  25.                         // 2 - Warte auf Synchronisation. 3 - Empfang läuft.
  26.                         // 4 - Programm inaktiv
  27.     LONG TimeLeft;  // voraussichtl. Dauer [s] bis zum nächsten Stellen
  28.                     // der Zeit
  29.     LONG LastError; // noch nicht implementiert (z.Z. immer Null)
  30.  };
  31.  
  32.  
  33.  Als Beispiel zur Benutzung der Struktur finden Sie in diesem Verzeichnis
  34.  die Sourcecodes der Hilfsprogramme WaitForDCF77 und WaitDCF77ifCrash.
  35.  
  36.  Bei der Weiterentwicklung des Programms ist eine Ergänzung der Struktur
  37.  um weitere Angaben möglich.
  38.  
  39.  Genaueres über Semaphoren finden Sie ab Seite 509 in
  40.  
  41.      Amiga ROM Kernel Reference Manual: Libraries, Third Edition
  42.      Addison-Wesley Publishing Company, Inc. 1992
  43.      ISBN 0-201-56774-1
  44.  
  45.  
  46.  Wenn die Versionsnummer von DCF77 abgefragt werden soll, kann das z.B.
  47.  auf folgende Weise geschehen:
  48.  
  49.     struct DCF77StateList *DCF77PublicState;
  50.     UBYTE    *DCF77SemaphoreName="DCF77 State";
  51.     LONG DCFVersion, DCFRevision, Characters;
  52.  
  53.     Forbid();
  54.     if(DCF77PublicState=(struct DCF77StateList *) FindSemaphore(DCF77SemaphoreName))
  55.     {
  56.         ObtainSemaphoreShared((struct SignalSemaphore *) DCF77PublicState);
  57.  
  58.         // Jetzt kann auf die bis Version 2.17 vorhandenen Werte zugegriffen
  59.         // werden...
  60.  
  61.         Characters=StrToLong(DCF77PublicState->Version,&DCFVersion);
  62.         Characters=StrToLong(DCF77PublicState->Version+Characters+1,&DCFRevision);
  63.         if(DCFVersion>2 || DCFVersion==2 && DCFRevision>=18)
  64.         {
  65.             // ...und jetzt auf die ab Version 2.18 vorhandenen Werte.
  66.         }
  67.         ReleaseSemaphore((struct SignalSemaphore *) DCF77PublicState);
  68.     }
  69.     else
  70.     {
  71.         // DCF77 läuft nicht
  72.     }
  73.     Permit();
  74.  
  75.  
  76.  Wie Sie sehen, müssen Zugriffe auf eine Semaphore mit Forbid()/Permit()
  77.  abgesichert werden. Um das Systemverhalten nicht zu beeinträchtigen,
  78.  sollten Sie diesen Vorgang möglichst kurz gestalten; am besten kopieren
  79.  Sie benötigte Werte in Hilfsvariablen und werten sie erst nach dem
  80.  Permit() aus.
  81.  
  82.  Inzwischen deutet sich an, daß bei zukünftigen Versionen des Amiga-OS der
  83.  Mechanismus des Semaphoren-Zugriffs vollkommen geändert werden wird (die
  84.  Forbid/Permit-Benutzung ist dann wahrscheinlich generell nicht mehr
  85.  zulässig). Diese Änderungen sind wohl bei der Anpassung an den PowerPC-Chip
  86.  unvermeidlich. Das könnte zur Folge haben, daß die DCF77-Programme in der
  87.  jetzigen Form nicht mehr arbeitsfähig sind. Rechnen Sie also mit dem
  88.  Erscheinen neuer Betriebssystemfunktionen für Semaphoren und einem
  89.  notwendigen Update der DCF77-Software.
  90.  Die oben beschriebene Datenstruktur wird sich aber nicht ändern, sofern
  91.  das nicht unvermeidlich ist.
  92.  
  93.